package com.hoshiicloud.goods.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hoshiicloud.common.query.OmnipotentParam;
import com.hoshiicloud.common.query.OmnipotentWrapper;
import com.hoshiicloud.common.update.UpdateBatchParam;
import com.hoshiicloud.goods.entity.spu.ExtSpuTags;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * <p>
 * SPU服务标签 服务类
 * </p>
 *
 * @author zhangshuhu
 * @since 2019-06-04
 */
public interface ExtSpuTagsService extends IService<ExtSpuTags> {

    ExtSpuTags getById(Long id);

    boolean save(ExtSpuTags entity);

    boolean updateById(ExtSpuTags entity);

    IPage getPage(IPage page, Wrapper queryWrapper, String key);

    boolean deleteById(Long id);

    List<ExtSpuTags> getByIds(List<Long> ids, String key);

    /**
     *  根据Id删除标签信息
     * @param id 标签的Id
     * @return boolean
     */
    boolean removeTagsById(Long id);

    /**
     * 根据spuId获取标签
     *
     * @param spuId 商品SPU主键
     * @return List<ExtSpuTags>
     */
    List<ExtSpuTags> getBySpuId(Long spuId);

    /**
     * 批量新增SPU服务标签
     */
    boolean saveTagsBatch(List<ExtSpuTags> extSpuTags);

    List<ExtSpuTags> listBySpuIds(List<Long> spuIds);

    /**
     * 批量删除
     */
    Boolean deleteBatchs(Long extSpuId);

    /**
     * 根据自定义条件进行批量更新
     */
    boolean updateBatchByWrapper(UpdateBatchParam<ExtSpuTags> updateBatchParam);

    /**
     * 批量更新
     */
    Boolean updateBatch(OmnipotentParam<ExtSpuTags> param);

    /**
     * 批量删除商品标签信息: 物理删除
     */
    Boolean removeBatch(List<OmnipotentWrapper> param);

}
